1. Field of the Invention
The invention relates generally to storage systems and more specifically relates to communication between storage controllers.
2. Discussion of Related Art
Serial Attached SCSI (“SAS”) comprises a family of standards for a computer system to couple with storage devices through storage controllers. Many details of the SAS family of standards may be found at www.t10.org. For example, a storage controller may communicate with a storage device (including a SAS disk drive) according to the Serial SCSI Protocol (“SSP”) standard.
To improve reliability and availability of storage devices, at least two storage controllers may be used simultaneously to coordinate operations of the storage controllers and/or to provide redundancy. Providing redundancy comprises communication between storage controllers to ensure that information in each storage controller's input/output cache memory is relatively consistent. For example, a storage controller may be in an active mode such that a processor of the active storage controller continuously processes storage requests from the computer system. Meanwhile, another storage controller may be in a passive mode such that the passive storage controller does not process storage requests actively. Ensuring information in each storage controller's cache memory is relatively consistent allows the passive storage controller to become active and take over from the active storage controller if the active storage controller fails for some reason. Those skilled in the art will readily recognize that in another example, a storage controller may be actively processing storage requests, while also ensuring that the storage controller is ready to take over from another active storage controller.
In order to ensure that information in each storage controller's cache memory is relatively consistent, for example to maintain cache coherency, a mechanism is needed to communicate information between storage controllers. For example, a mechanism is needed for the active storage controller to transmit updated data in its cache memory to the passive storage controller in order for the updated data to be written to the cache memory of the passive storage controller. Similarly, a mechanism is needed to communicate information between storage controllers to coordinate operations of the storage controllers. One mechanism is to provide a dedicated link for communication between the two storage controllers. However, this mechanism requires costly overhead including additional hardware, firmware, and/or software.
Thus it is an ongoing challenge to maintain cache coherency and provide communication between two storage controllers.